package com.itheima.d3_abstract;

/*
    某宠物游戏，需要管理猫、狗的数据。
    猫的数据有：名字；行为是：喵喵喵的叫~
    狗的数据有：名字；行为是：汪汪汪的叫~
    请用面向对象编程设计该程序。

    抽象类的场景和好处 :
    结论 : 多个类中只要有重复代码（包括相同的方法签名），我们都应该抽取到父类中去
    此时，父类中就有可能存在只有方法签名的方法，这时，父类必定是一个抽象类了，我们抽出这样的抽象类，就是为了更好的支持多态。

 */
public class Test2 {
    public static void main(String[] args) {
        String type = "wechat";
        //设置父类对象为null
        Zong pay = null;
        //判断type是否符合，如果符合就创建一个对象赋值，，也就是多态
        if ("abc".equals(type)) {
            pay = new abcPay();
        } else if ("wechat".equals(type)) {
            pay = new weChat();
        }
        pay.pay(100);

    }
}

//支付抽象类
abstract class Zong {
    //支付方法，不知道子类通过什么支付
    abstract public void pay(int money);
}

//通过农业银行支付
class abcPay extends Zong {

    @Override
    public void pay(int money) {
        System.out.println("通过农业银行支付");
    }


}

//通过微信支付
class weChat extends Zong {

    @Override
    public void pay(int money) {
        System.out.println("通过微信支付");
    }
}
